package be.kdg.bombermanunlimited.client.network.packet;

/**
 * Een interface die een minimaal packet moet implementeren
 * 
 * @author Philip
 * 
 */
public interface IPacket {
	/**
	 * Geeft de totale header lengte terug. Alle header lengtes worden opgeteld
	 * indien nodig
	 * 
	 * @return
	 */
	public int getTotalHeaderLength();

	/**
	 * Geef een byte array terug die zowel header als data bevat en dus kan
	 * worden verzonden
	 * 
	 * @return
	 */
	public byte[] convertToByteArray();

	/**
	 * Geef de data lengte terug; exclusief header lengte
	 * @return
	 */
	public int getDataLength();

	/**
	 * Geef enkel de data terug; exclusief de headers
	 * @return
	 */
	public byte[] getData();

	/**
	 * Geef terug van welk type het packet is
	 * @return
	 */
	public byte getType();

	/**
	 * Geef het type terug onder de vorm van een naam
	 * @return
	 */
	public String getTypeName();
}
